﻿#pragma once
#ifndef WRWORKCONFIGPROVIDER_H
#define WRWORKCONFIGPROVIDER_H

#include "../WRGlobal.h"
#include "../../WRSoft-Utility/Runtime/WRAppService.h"

#include <QDomElement>

//工作配置提供者类型标识 {F8822D46-0257-472F-86D3-C9A9549D109E}
#define WRWorkConfigProviderType QUuid(0xf8822d46, 0x257, 0x472f, 0x86, 0xd3, 0xc9, 0xa9, 0x54, 0x9d, 0x10, 0x9e)

//工作文件配置提供者类标识 {5AA9EEA0-0BF9-4019-99F9-D3A2C0A232C5}
#define WRWorkFileConfigProviderClass QUuid(0x5aa9eea0, 0xbf9, 0x4019, 0x99, 0xf9, 0xd3, 0xa2, 0xc0, 0xa2, 0x32, 0xc5)
//工作文件配置提供者字符数组 WRWorkFileConfigProvider
#define WRWorkFileConfigProviderStrArr  {'W', 'R', 'W', 'o', 'r', 'k', 'F', 'i', 'l', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r'}
//工作文件配置提供者字符个数
#define WRWorkFileConfigProviderStrLen  24

//工作直接配置提供者类标识 {E47FAA37-D3B6-4188-850E-9609DB9F00CC}
#define WRWorkDirectConfigProviderClass QUuid(0xe47faa37, 0xd3b6, 0x4188, 0x85, 0xe, 0x96, 0x9, 0xdb, 0x9f, 0x0, 0xcc)
//工作直接配置提供者字符数据 WRWorkDirectConfigProvider
#define WRWorkDirectConfigProviderStrArr  {'W', 'R', 'W', 'o', 'r', 'k', 'D', 'i', 'r', 'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r'}
//工作直接配置提供者字符个数
#define WRWorkDirectConfigProviderStrLen  26

namespace WRTypes
{
    //获取工作配置提供者类型。
    WRSOFT_WORKING_COMMON_API WRType* workConfigProvider(void);
}

//表示工作配置提供者。
class WRSOFT_WORKING_COMMON_CLASS WRWorkConfigProvider : public WRAppService
{
private:
    //禁用复制构造函数和赋值操作符。
    Q_DISABLE_COPY(WRWorkConfigProvider)

protected:
    //初始化工作配置提供者。
    inline WRWorkConfigProvider(void)
    {
        //add code here
    }
    //释放当前对象所占用的相关资源。
    ~WRWorkConfigProvider(void)
    {
        //add code here
    }

public:
    //获取对象类型。
    WRType* type(void) const;
    //获取配置内容。
    virtual QDomElement content(void) = 0;
};

#endif // WRWORKCONFIGPROVIDER_H
